Inno Setup 5
Revision History
Copyright © 1997-2006 Jordan Russell. All rights reserved.
Portions Copyright © 2000-2006 Martijn Laan. All rights reserved.
For conditions of distribution and use, see LICENSE.TXT.
5.1.8 (2006-10-11)
- Converted the documentation to HTML Help format for compatibility with Windows Vista, which does not support WinHelp-based help files at all (as of RC2). HTML Help is also said to work better with screen readers. Much of the conversion process was done by hand, so there may be some mistakes. Please report any problems you encounter.
- Updated the LZMA SDK compression/decompression code to version 4.43. Compression is noticably faster in this version. (Compiling Inno Setup's own installer used to take 7 seconds; now it takes 4.)
- Added a "requestedExecutionLevel" setting to Setup's manifest resource to disable Windows Vista's legacy application compatibility hacks. Now you should no longer see bogus "This program might not have installed correctly" dialogs when cancelling installations or after running installations that do not create an Uninstall key.
Note: It is possible that you were unwittingly relying on some of these application compatibility hacks, so it is recommended that you re-test your installations on Windows Vista after upgrading to this version.
- When deleting a .chm file, the uninstaller will now automatically delete any corresponding .chw file as well.
- Paths that are accessed at compile time may now include a "userdocs:" prefix, which is replaced with the path of your My Documents folder. For a usage example, see any of the example scripts.
- Setup now creates an "InstallDate" value in the Uninstall key so that Vista's Programs and Features Control Panel applet doesn't have to guess the "Installed on" date.
- Pascal Scripting changes/improvements:
- The StringChange function now returns an Integer indicating the number of changes made. Performance was also improved.
- Introduced new StringChangeEx function, which adds support for strings containing double-byte characters (used in Chinese, Japanese, and Korean languages). Unless you require binary safety, this function should be used instead of StringChange, especially if you're working with strings containing paths or filenames.
- IDE changes:
- The Open and Save As dialogs now permit sizing and include a places bar.
- On Windows Vista, the IDE no longer requests administrative privileges when started. (You will, however, still see UAC popups when launching compiled installations from within the IDE.)
- When you compile an unsaved script, the output is now placed under your My Documents folder (instead of the current directory). It asks if you want to save the script first, though.
- Updated bzip2 library to version 1.0.3.
- Minor tweaks.
5.1.7 (2006-08-18)
- New [Setup] section directive: TerminalServicesAware. If set to yes (the default), the "Terminal Services aware" flag will be set in the headers of the Setup and Uninstall programs. Most notably, this ensures that the {win} constant consistently returns the system's real Windows directory on systems with Terminal Services installed in application mode. Refer to the help file for details.
- The program Setup internally uses to register/unregister DLLs/OCXs is now compiled with the "Terminal Services aware" flag set, like Microsoft's regsvr32.exe.
- When determining which language to select by default, Setup now checks the LanguageCodePage values of each language in addition to LanguageID. Previously, Traditional Chinese could be auto-selected on a Simplified Chinese system due to both languages having the same primary language ID. This resulted in unreadable text as they use completely different character sets (code pages).
- New [Setup] section directive: ShowUndisplayableLanguages. If set to yes, all languages will be listed in the Select Language dialog, including those that cannot be displayed properly on the user's system. If you were using the LanguageCodePage=0 trick in your script before, you should replace it with this to avoid the above-mentioned problem with Chinese languages.
- A unique value is now appended to unins*.exe files so that uninstallers from different applications won't have the same hash.
- The compiler now flags MSCOREE.DLL as an "unsafe" file.
- Fix: The createallsubdirs [Files] section flag didn't properly escape directory names containing "{" characters.
- Fix: The text on the Finished wizard page wasn't initialized when a restart was needed and /NORESTART was used without /SILENT.
- Pascal Scripting: Defined new DWORD_PTR, UINT_PTR, and INT_PTR types for completeness.
- Added official Basque and Spanish translations.
- Minor tweaks.
5.1.6 (2005-11-18)
- Registration and unregistration of 32-bit DLLs is now performed in an external process. This change was primarily made to ensure that a buggy DLL cannot bring down the entire Setup/Uninstall process by, for example, corrupting its memory.
- Pascal Scripting changes/improvements:
- The already-existing AnsiUppercase and AnsiLowercase functions are now documented. Unlike their non-Ansi counterparts, these can handle non-ASCII characters (e.g. accented letters).
- TNewCheckListBox: Added new ItemCaption property. This can be used to change the caption of an already-created item. (Setting an item's caption through the Items property is not supported by TNewCheckListBox.)
- OLE is now initialized before registering a 64-bit DLL.
- While Setup is waiting for a 64-bit DLL to register, it now processes messages.
- On CD/DVD-spanned installs, fixed issue with AutoPlay not being suppressed if you clicked OK too quickly on the Setup Needs the Next Disk dialog after swapping CDs/DVDs.
- When WindowVisible=yes, the gradient background now uses 256 colors instead of 64, resulting in a smoother appearance when running in 24- or 32-bit color mode.
- In the documentation for the Excludes [Files] section parameter, mention that a simple Unix-style pattern matching routine is used, which exhibits some differences from the DOS/Windows-style pattern matching used in the Source parameter.
- Added official Slovak translation.
- Minor tweaks.
5.1.5 (2005-08-17)
- Added new VersionInfoCopyright [Setup] section directive, which allows you to set the Copyright field in Setup's version info.
- Pascal Scripting changes/improvements:
- New functions: CustomMessage, FmtMessage.
- The FileExists function no longer strips off any trailing backslash from the specified filename. Previously, FileExists('c:\filename\') could return True.
- TNewCheckListBox: Add new RequireRadioSelection Boolean property, which defaults to False. The "require a selection on top-level radio button groups" behavior introduced in 5.1.4 is now optional and disabled by default on user-created TNewCheckListBoxes.
- Now handles values with surrounding quotes consistently across all [Setup] and [LangOptions] directives. Previously, only certain directives would strip surrounding quotes; now they all do. If you were relying on the old, inconsistent behavior, it may be necessary to tweak your scripts.
- On [INI] section entries whose filenames include paths, it now checks if the directories exist and creates them if necessary.
- For consistency with regsvr32, FPU exceptions are now masked while registering/unregistering 32-bit DLLs.
- /LOG: When processing a [Files] entry that has the 32bit or 64bit flag, it now logs a message to that effect.
- Added official Finnish translation.
- SetupLdr's internal data is now stored in a resource instead of in the DOS header. This should address compatibility issues with third-party apps that replace the DOS header.
- Updated zlib library to version 1.2.3.
- Minor tweaks.
5.1.4 (2005-05-30)
- New command line parameters supported by Setup: /TASKS and /MERGETASKS. These can be used to initially select/deselect tasks.
- Pascal Scripting: Added new GetWindowsVersionEx function, which returns extended information about the user's version of Windows, including the service pack level and product edition (e.g. Professional or Home, Standard or Enterprise Server).
- Using /COMPONENTS= with an empty components list now deselects all components. Ditto for "Components=" in a .INF file (loaded via /LOADINF). Previously, it would keep the default selection in these cases.
- On the Select Tasks wizard page, when the list of tasks has to be reinitialized due to the user going back and changing the component selection, it now restores the checked state of the items from when the page was last shown.
- It should no longer be possible for a top-level, exclusive group of components or tasks to have no selection. If the script specifies that all items in the group are to be unchecked, Setup will check the first item automatically.
- Removed 1024-character limit on .INI-file values read via the {ini:...} constant or GetIniString support function. Now, values can be up to 64 KB in length, or the maximum length supported by the operating system, whichever is smaller.
- Fix: The CreateOleObject and GetActiveOleObject support functions leaked references in some cases.
- Fix: Setup would crash or fail to start if passed a command line parameter more than 255 characters in length. (This was due to a buffer overflow bug in a Delphi run-time library function.)
- Based on RemObjects Pascal Script SVN code revision 1045.
- Minor tweaks.
5.1.3-beta (2005-05-03)
- Pascal Scripting:
- When Setup/Uninstall is running in 64-bit mode, most of the support functions that access files now disable WOW64 file system redirection, meaning they are now capable of working with files located in the 64-bit System directory. Some, however, still do not. See the 64-bit Installation Limitations topic in the help file for specifics.
- Replaced FileSearch function with a new implementation that properly supports MBCS, and doesn't search the current directory unless it is told to (e.g. by including "." in the directory list).
- Uninstaller: Now hides the taskbar button when the /VERYSILENT switch is used.
- IDE change: Added an option to the New Script Wizard to specify that the application doesn't have a main executable file.
- Based on RemObjects Pascal Script SVN code revision 1039.
- Minor tweaks.
5.1.2-beta (2005-04-14)
- Addressed some 64-bit limitations in previous betas:
- Setup is now capable of registering 64-bit DLLs/OCXs and 64-bit type libraries. When Setup is running in 64-bit mode, the regserver and regtypelib [Files] section flags assume that files are 64-bit by default. If you need to register a 32-bit file in a 64-bit mode install, include the new 32bit flag.
- Setup is now capable of setting permissions on 64-bit registry keys and on files located in the 64-bit System directory.
- Added two new [Files] section flags: 32bit and 64bit. These override the install mode and affect which System directory the {sys} constant maps to, whether the regserver and regtypelib flags treat the file as 32-bit or 64-bit, and which SharedDLLs key the sharedfile flag updates.
- Pascal Scripting: Added new Is64Bit parameters to the following functions: IncrementSharedCount, DecrementSharedCount, RegisterServer, UnregisterServer, RegisterTypeLibrary, UnregisterTypeLibrary. See the documentation for details.
- Setup will now only append to existing uninstall logs created by installs done in the same bit mode (32- or 64-bit).
- When an error occurs while registering a DLL/OCX/type library after a restart, it now displays an error message, provided the noregerror flag isn't used. Before, it was silent.
- Constants may now be used in the AppMutex [Setup] section directive.
- Added official Brazilian Portuguese, Danish, Hungarian, and Italian translations.
- Renamed official Standard Portuguese translation file from PortugueseStd.isl to Portuguese.isl.
- Various minor fixes to the 64-bit functionality.
- Updated the LZMA SDK compression/decompression code to version 4.16. The new version incorporates some fixes and a minor speed improvement.
- Based on RemObjects Pascal Script SVN code revision 1033.
- The uninstall program's version is now 51.42.0.0.
- Minor tweaks.
5.1.1-beta (2005-03-24)
- When Setup is running in 64-bit mode, it is now possible to install files to the 64-bit System directory, and execute programs located there.
The {sys} constant now maps to the 64-bit System directory when used in the [Dirs], [Files], [InstallDelete], [Run], [UninstallDelete], and [UninstallRun] sections. Elsewhere, the {sys} constant still maps to the 32-bit System directory. See the Install Mode: 32-bit vs. 64-bit and 64-bit Installation Limitations topics in the help file for details.
- Added workaround for bug in the 64-bit editions of Windows prior to Windows Server 2003 SP1 RC2 which caused the restartreplace [Files] section flag to fail when used on files installed to {sys}. (Specifically, Windows would try to replace the file in the 64-bit System directory instead of the 32-bit one.)
- Compiler: A warning is now emitted instead of an error when a custom message isn't defined for all languages.
- Fix: The /COMPONENTS command line parameter supported by Setup didn't accept forward slashes in component names -- only backslashes.
- Fix: The compiler no longer automatically strips any trailing slashes/backslashes from the Subkey parameter of [Registry] entries. Versions 5.0.8 and 5.1.0-beta stripped forward slashes. This was wrong because valid registry key names can include forward slashes.
- Fix: When files were deleted by an [InstallDelete]/[UninstallDelete] section entry or DelTree function call, it also inappropriately stripped the read-only attribute from directories that matched the wildcard.
- Fix: An "internal error" message was displayed if the user removed all contents from the Select Start Menu Folder wizard page's edit control and also checked the Don't create a Start Menu folder check box.
- Based on RemObjects Pascal Script SVN code revision 1032.
- The uninstall program's version is now 51.41.0.0.
- Minor tweaks.
5.1.0-beta (2005-03-01)
- Inno Setup now has initial support for the installation of 64-bit applications on 64-bit versions of Windows:
- Setup can run in one of two modes: 32-bit or 64-bit. 64-bit mode is selected if the user is running a 64-bit version of Windows and the system's processor architecture is included in the value of the new ArchitecturesInstallIn64BitMode [Setup] section directive. Otherwise, 32-bit mode is used.
How do the two modes of installation differ? Primarily, the differences lie in where things are installed by default. For example, 64-bit applications have their own Program Files directory, and their own isolated view of the registry. See the Install Mode: 32-bit vs. 64-bit topic in the help file for details.
- Added new [Setup] section directive ArchitecturesAllowed. When set, it specifies which processor architecture(s) Setup is allowed to run on.
- Even when running in 32-bit mode, Setup is capable of installing files and creating registry keys in 64-bit locations, and vice versa. New options have been added that override the default locations:
- New constants: {pf32}, {pf64}, {cf32}, {cf64}.
- Root key names used in the [Registry] section, {reg:...} constants, and the Reg* [Code] support functions may now include 32 or 64 suffixes to specify either the 32-bit or the 64-bit view of the registry respectively.
- To allow "multi-architecture" installations, new [Code] support functions have been added: IsWin64, Is64BitInstallMode, ProcessorArchitecture.
- Added new {syswow64} constant and GetSysWow64Dir support function.
- Added new example scripts: 64Bit.iss, 64BitTwoArch.iss, and 64BitThreeArch.iss.
- Note: There are some limitations to be aware of when utilizing the 64-bit installation features. See the 64-bit Installation Limitations topic in the help file for details. There are plans to address these limitations in the near future, where possible.
Purchase of the necessary 64-bit development hardware has been made possible by our kind donators, many thanks to them!
- Pascal Scripting: New Format support function, which replaces the old Format1, Format2, Format3, and Format4 functions. Unlike those functions, Format accepts a variable number of arguments, and supports argument types other than strings.
- Compiler: A warning is now emitted instead of an error when an unrecognized message name in a [Messages] section is encountered.
- IDE changes: The New Script Wizard now allows you to specify the Setup languages.
- /LOG improvement: The parameters of programs spawned in the [Run] and [UninstallRun] sections are now logged.
- '&' characters in the BeveledLabel message no longer need to be escaped using another '&'.
- Some messages have been added and removed in this version.
(View differences in Default.isl)
- New messages: OnlyOnTheseArchitectures, MissingWOW64APIs, TranslatorNote, UninstallOnlyOnWin64.
- Removed messages: NoIconsCheck.
- Based on RemObjects Pascal Script SVN code revision 1024.
- The uninstall program's version is now 51.40.0.0.
- Minor tweaks.
5.0.8 (2005-02-17)
- IDE changes:
- Added support for setting breakpoints (Run | Toggle Breakpoint).
- The dots in the editor's gutter now shift properly when you insert/remove lines while debugging. (Note, however, that any changes you make while debugging won't take effect until you re-compile.)
- Uninstaller: When a DLL/OCX was installed multiple times by separate installations of the same application, the uninstaller would unregister the DLL/OCX once for each install. As an optimization, it will now unregister the DLL/OCX only once.
- Compiler: Using outdated .isl files that are missing some messages no longer results in a fatal compiler error. Now, warnings will be printed, and the missing messages will be pulled from Default.isl.
- Various improvements/fixes to the parsing of pathnames. For example, ExtractFilePath('\\server\share') now returns \\server\share rather than \\server, and ExtractFileDir('path\\') now returns path rather than path\\.
- When recursively deleting directories (for example, from an [InstallDelete] entry or a call to DelTree), it no longer recurses into reparse points.
- The value of the NoProgramGroupCheck2 message is now always used as the caption of the "no icons" check box on the Select Start Menu Folder page of the wizard. Previously, it used either NoIconsCheck or NoProgramGroupCheck2 depending on whether an installation had [Icons] entries with Tasks parameters.
- exclusive [Tasks] items that have no visible siblings are no longer automatically converted into check boxes. (If you really want check boxes, then you shouldn't use the exclusive flag.)
- Based on RemObjects Pascal Script SVN code revision 1022.
- Minor tweaks.
5.0.7 (2005-01-19)
- When AllowNoIcons and UsePreviousGroup are set to yes, the Don't create any icons setting is now preserved between installs.
- Both Setup and Uninstall now support a /SUPPRESSMSGBOXES command line parameter to suppress message boxes. This parameter only has an effect when combined with /SILENT or /VERYSILENT. See the help file for more details.
- IDE changes:
- Various enhancements to the New Script Wizard.
- Added a new Tools menu with a command that opens the Add/Remove Programs Control Panel applet.
- When stepping through code, the IDE now uses a different method of bringing Setup to the foreground, and vice versa. Previously, if for some reason Setup hung it was possible for the IDE to hang as well.
- /LOG changes:
- Now logs the contents of message boxes.
- On NT platforms, the OS service pack level is now logged, as well as the privilege level of the user (Administrative, Power User, or None).
- Now doesn't skip the replacement of a protected system file until after the version numbers of the new and existing files are logged.
- Pascal Scripting changes/improvements:
- Added new CharLength, DLLGetLastError, RegWriteExpandStringValue and SuppressibleMsgBox functions.
- GetSpaceOnDisk no longer requires that a root directory be specified, or that a trailing backslash be included.
- Removed the requirement that Windows NT 4.0 users have SP6 installed, which was added in version 5.0.1-beta. Setup should run on previous service pack levels but no guarantees can be made as I generally only test with SP6. Therefore I recommend setting MinVersion to at least 4.0,4.0sp6 if possible.
- Removed legacy code that searched for and deleted Uninstall keys with suffixes of _is2 and higher. Only Inno Setup 1.08 (from 1998) created such keys.
- Reverted the change in 5.0.4-beta that made it automatically expand relative paths specified in [Icons] section because it didn't work when the paths contained environment-variable strings (e.g. %SystemRoot%\...).
- Fix: In 5.0.6, if you clicked Back on the Select Tasks wizard page and changed component settings causing a different set of tasks to be activated, the new tasks would show up with the wrong item type when you returned to the Select Tasks wizard page. (If you do not have tasks with Components parameters, then this bug did not affect you.)
- Fix: In rare cases, component and task items with multi-line captions were painted incorrectly (strictly a cosmetic issue).
- Fix: The UninstallSilent support function always returned False.
- Fix: Even though they were not being installed, files with the dontcopy flag were being displayed on the installation progress page and included in the required disk space figure(s).
- Tweaked wording of the ExitSetupMessage message.
(View differences in Default.isl)
- Based on RemObjects Pascal Script SVN code revision 1017.
- Minor tweaks.
5.0.6 (2004-12-24)
- This version introduces a new Inno Setup logo, new icons for the Inno Setup IDE, and new wizard images for the Inno Setup installer, created by glyFX.
- New [Files] section flag: createallsubdirs. By default the compiler skips empty directories when it recurses subdirectories searching for the Source filename/wildcard. The createallsubdirs flag causes these directories to be created at install time (just like if you created [Dirs] entries for them). Must be combined with recursesubdirs.
- New flag supported by the [Components] and [Tasks] sections: checkablealone. This flag specifies that the component/task can be checked when none of its children are. By default, if no Components/Tasks parameter directly references the component/task, unchecking all of the component/task's children will cause the component/task to become unchecked.
- Pascal Scripting changes/improvements:
- An AddEx function has been added to TInputOptionWizardPage to allow the addition of subitems.
- Various properties have been added to the TInput...WizardPage classes to allow access to the wizard page controls.
- Event function NeedRestart is now called near the end of the installation process instead of at the beginning.
- In DLL function imports, new options 'setuponly' and 'uninstallonly' are supported, which cause a DLL to be loaded only when the script is running from Setup or Uninstall, respectively.
- Added new UnloadDLL and GetShellFolderByCSIDL functions.
- /LOG changes:
- No longer (automatically) logs when the event functions InitializeSetup, InitializeWizard, GetCustomSetupExitCode, and DeinitializeSetup are called successfully -- only if they raise exceptions, and in the case of InitializeSetup, if False is returned.
- Now logs the function name when the NeedRestart, RegisterPreviousData, InitializeUninstall, DeinitializeUninstall, CurUninstallStepChanged, and UninstallNeedRestart event functions raise exceptions.
- Compiler IDE changes/improvements:
- New "Debug Output" view that shows log messages from Setup/Uninstall in real time. (These are the same messages seen in the log file produced when Setup/Uninstall is run with the /LOG switch.)
- New Pause on exceptions option (accessible via View | Options). Unchecking this will prevent the debugger from pausing when an exception is raised from [Code].
- Now preserves the position of the splitter when you close the IDE.
- Console-mode compiler (ISCC.exe): A new /F switch is supported which can be used to specify a new output filename, overriding any OutputBaseFilename setting in the script.
- Improved Setup load time on installations containing hundreds of components at varying levels.
- Updated zlib library to version 1.2.2.
- Fix: When multiple patterns were specified in a [Files] section Excludes parameter, patterns that included backslashes were handled incorrectly.
- Fix: [Components]: If you had two child radio buttons and one had children of its own, then unchecking & rechecking the top-level item would cause both radio buttons to be checked.
- Based on RemObjects Pascal Script SVN code revision 1000.
- Minor tweaks.
5.0.5-beta (2004-11-14)
- New [Setup] section directive: OutputManifestFile. When set, the compiler will create a text file detailing information about the files compiled into Setup.
- Pascal Scripting changes/improvements:
- Added new exception-related functions: GetExceptionMessage, RaiseException, and ShowExceptionMessage.
- The ExtractTemporaryFile support function now raises an exception with a descriptive error message when it fails, instead of returning a Boolean indicating success/failure.
- GetSpaceOnDisk: Added new InMegabytes parameter. By setting it to False, you can get figures in bytes (capped at 2 GB-1).
- RegWriteMultiStringValue: When writing values, it now appends two null terminators automatically, like [Registry] does when writing multisz-type values.
- Console-mode compiler (ISCC.exe) improvements:
- A new /O switch is supported which can be used to specify a new output path, overriding any OutputDir setting in the script.
- A new /Q switch is supported which causes it to compile quietly, printing only error messages.
- Error messages are now written to standard error instead of standard output.
Note: If you were previously redirecting all compiler messages to a file using >filename you will now need to use >filename 2>&1 to capture standard error as well. If you wish to redirect only standard error, use 2>filename.
- When ChangesAssociations=yes and/or ChangesEnvironment=yes are used, it now notifies Windows of the changes after any [Run] section entries are processed and the CurStepChanged(ssPostInstall) event function is called.
- Reverted one of the small image placement changes in 5.0.4: horizontally centering has been restored.
- Fix: When the ExpandConstant support function was called at uninstall time, {common*} constants always mapped to their {user*} equivalents even if the user had administrative privileges.
- Fix: ChangesEnvironment=yes worked on Windows NT 4.0 and 2000 but had no effect on Windows XP.
- Fix: When writing empty REG_MULTI_SZ values, it should only append 1 null terminator, not 2.
- Based on RemObjects Pascal Script SVN code revision 983.
- The uninstall program's version is now 51.34.0.0.
- Minor tweaks.
5.0.4-beta (2004-10-06)
- New [Setup] section directive: ChangesEnvironment. When set to yes, at the end of the installation Setup will notify other running applications (notably Windows Explorer) that they should reload their environment variables from the registry.
- Pascal Scripting changes/improvements:
- The support functions CreateCustomForm, ScaleX, and ScaleY may now be called at uninstall time.
- TRichEditViewer support class improvement: The Color property is now respected.
- /LOG improvements:
- It's now possible to specify a fixed path/filename to use for the log file via /LOG="filename".
- Now logs when various event functions are called, and in the case of InitializeSetup it also logs the return value of the function.
- Now logs when DLL/OCX/type library registration fails, even if the noregerror flag is specified.
- Stretching of the small wizard image (specified by WizardSmallImage) now only occurs if the image is larger than the default size, or if the user is running larger-than-normal fonts. Previously, it always attempted to stretch the image.
- The WizardSmallImageBackColor [Setup] section directive is now deprecated and ignored. Any unused space around the small wizard image is now filled with the standard window color (usually white).
- Relative paths specified in [Icons] section entries are now converted into absolute paths automatically.
- Fix: On Windows XP, folder shortcuts (which were introduced in 5.0.3-beta) showed ".lnk" at the end of them.
- Based on RemObjects Pascal Script SVN code revision 960.
- The uninstall program's version is now 51.33.0.0.
- Minor tweaks.
5.0.3-beta (2004-08-16)
- New supported [Files] section flag uninsnosharedfileprompt, which tells the uninstaller to automatically remove the shared file when its reference count reaches zero instead of asking the user. Must be combined with the sharedfile flag to have an effect.
- New supported [Icons] section flag foldershortcut, which creates a special type of shortcut known as a "Folder Shortcut". Normally, when a shortcut to a folder is present on the Start Menu, clicking the item causes a separate Explorer window to open showing the target folder's contents. In contrast, a "folder shortcut" will show the contents of the target folder as a submenu instead of opening a separate window.
Folder shortcuts are only supported by Windows 2000, Me, and later. On earlier versions of Windows, Setup will fall back to creating a normal shortcut when this flag is used.
- Pascal Scripting changes/improvements:
- The return value of the CreateShellLink function has changed from a Boolean to a String. Now, any failure results in an exception being raised.
- The uninstaller is now capable of removing directories that have the read-only attribute set. (No special flags are needed; this is the default behavior.)
- Based on RemObjects Pascal Script SVN code revision 948.
- The uninstall program's version is now 51.32.0.0.
- Minor tweaks.
5.0.2-beta (2004-08-05)
- Pascal Scripting changes/improvements:
- New GetUILanguage support function.
- Compiler IDE: When a file has been modified outside the editor, offer to reload it.
- Fix: The per-page event functions introduced in 5.0.1 that returned Boolean values didn't work properly.
- Fix: When the overwritereadonly [Files] section flag was used and Setup was unable to remove the read-only attribute from a file (e.g. due to ACL restrictions), it would get stuck in an infinite loop.
- Based on RemObjects Pascal Script SVN code revision 947.
5.0.1-beta (2004-08-02)
- Compiler IDE: the toolbar now uses a modern looking set of images kindly donated by glyFX.
- Setup/Uninstall can now wait on processes spawned using [Run]/[UninstallRun] entries that have the shellexec flag. Combine shellexec with either the new waituntilterminated flag (the default behavior when shellexec isn't specified) or the waituntilidle flag.
- When Setup is running on Windows NT 4.0, Service Pack 6 is now required. This change shouldn't impact any significant number of users; SP6 was released five years ago, and almost all other programs that still support NT 4.0 nowadays have the same requirement.
- Pascal Scripting changes/improvements:
- Added new supported event function CancelButtonClick, which is called when the user clicks the Cancel button.
- The prototype of the CurStepChanged function has changed, as has the names of the CurStep values passed to it. See the help file for details.
- The names of the values passed to the CurUninstallStepChanged function have changed. See the help file for details.
- Per-page event functions are now supported. TWizardPage and its descendants now include these properties: OnActivate, OnBackButtonClick, OnCancelButtonClick, OnNextButtonClick, OnShouldSkipPage. See the Support Classes Reference topic in the help file for the prototypes of these event functions.
- Replaced the InstExec function with a new function named Exec. The new function offers the same functionality as the old one, but uses a slightly different prototype. The WaitUntilTerminated and WaitUntilIdle parameters have been replaced with a single Wait parameter.
- Replaced the InstShellExec function with a new function named ShellExec. The new function adds Verb and Wait parameters. To get ShellExec to behave the same way as the old function, specify 'open' in the Verb parameter and ewNoWait in the Wait parameter.
- Replaced the FindFirst and FindNext support functions with new versions that return more information about found files and can handle nested searches. Any existing scripts that called these functions will need updating. There is also a new FindClose function that you should call at the end of a find sequence.
- Replaced the confusingly-named ShouldProcessEntry support function with new functions named IsComponentSelected and IsTaskSelected.
- The Wizard* support functions now raise exceptions if you call them before the wizard has been initialized, instead of returning empty strings.
- On a file that has the uninsrestartdelete flag the containing directory will now also be removed at uninstall time.
- When extracting files, Setup now sets just the modification times instead of the creation and modification times.
- /LOG improvement: Now logs permission setting on files/directories/registry keys.
- The compiler now flags UXTHEME.DLL as an "unsafe" file.
- Dropped the obsolete WizModernImage2.bmp and WizModernSmallImage2.bmp images.
- Based on RemObjects Pascal Script SVN code revision 945.
- The uninstall program's version is now 51.31.0.0.
- Minor tweaks.
5.0.0-beta (2004-07-14)
- The size of compiled installations has decreased by 22-26 KB from Inno Setup 4.2.7, primarily due to the merging of Setup and Uninstall into a single binary.
- Pascal Scripting can now be used to customize Uninstall:
- Added Uninstall specific event functions InitializeUninstall, DeinitializeUninstall, CurUninstallStepChanged and UninstallNeedRestart.
- Added support functions IsUninstaller and UninstallSilent.
Furthermore, the compiler IDE now supports Uninstall debugging. To debug Uninstall, first run Setup from the IDE, install your application, select Target Uninstall in the Run menu and finally use the debugger functions as normal.
See the help file and the UninstallCodeExample1.iss example script for more information.
- The custom wizard page support has been completely redesigned from the ground up. The new design uses an event-driven model just like standard wizard pages; no longer do you have to write complicated loops to handle sequences of custom pages.
Any existing code utilizing custom wizard pages will need updating; all of the old functions have been replaced. Please see the new Using Custom Wizard Pages topic in the help file and the CodeDlg.iss and CodeClasses.iss example scripts for examples of how to use the new custom wizard page model.
- Besides space separated lists, you may now also use boolean expressions as Components, Tasks, Languages and Check parameters. Supported operators include not, and, and or. For example:
[Components]
Name: a; Description: a
Name: b; Description: b
[Tasks]
Name: p; Description: a or b; Components: a or b
Name: q; Description: a and b; Components: a and b
Name: r; Description: not a or b; Components: not a or b
Name: s; Description: not (a or b); Components: not (a or b)
Name: t; Description: a or b - old style; Components: a b
- This syntax of function parameters in Check, BeforeInstall and AfterInstall parameters has changed to allow a list of multiple, comma separated, parameters and the use of Integer and Boolean parameter types besides String types. For example, you may now use:
[Files]
Source: MyProg.exe; DestDir: {app}; Check: MyCheck(1, True, 'Some text')
[Code]
function MyCheck(I: Integer; B: Boolean; S: String): Boolean;
begin
Result := (I > 0) and B and (S <> '');
end;
Also, there's one support function that may be called from within a parameter list: ExpandConstant. For example:
[Files]
Source: MyProg.exe; DestDir: {app}; Check: MyCheck(1, True, ExpandConstant('{app}'))
Existing scripts using function parameters will need to be updated.
- The functions specified by {code:...} constants and by Check, BeforeInstall and AfterInstall parameters may now refer to support functions too, for example:
[Components]
Name: adminonly; Description: My Admin Only Component; Check: IsAdminLoggedOn
[Files]
Source: MyProg.exe; DestDir: {app}; BeforeInstall: Log('About to install MyProg.exe')
Source: MyProg.hlp; DestDir: {app}\Help; Check: DirExists(ExpandConstant('{app}\Help'))
[INI]
FileName: {app}\MyIni.ini; Section: MySettings; Key: ShortApp; String: {code:GetShortName|{app}}
FileName: {app}\MyIni.ini; Section: MySettings; Key: AppDrive; String: {code:ExtractFileDrive|{app}}
- Wizard-related event functions such as NextButtonClick are now called on silent installs as well. In fact, silent installs now function almost identically to non-silent ones with the exception that the Next button is automatically "clicked".
- Logging improvements:
- The filenames of programs spawned in the [Run] section are now logged.
- The /LOG parameter is now also supported by Uninstall, which causes Uninstall to create a log file in the user's TEMP directory detailing file uninstallation and [UninstallRun] actions taken during the uninstallation process. This can be a helpful debugging aid. See the Uninstall Command Line Parameters topic in the help file for further details.
- A new ShouldSkipPage event function has been added, which replaces SkipCurPage. Existing scripts that contain a SkipCurPage function will need to be updated. Note that unlike the old SkipCurPage event function, the page passed to the ShouldSkipPage function is not the current page.
- Added support function Abort. Calling Abort throws an exception to abort the current operation. It does not terminate Setup or Uninstall unless it's still starting up.
- When extracting a file, Setup now pre-allocates all of the bytes in the destination file on disk. This allows the system to know what the final size of the file will be before extraction begins, and avoid fragmenting it.
- The compiler now fully supports script files that use Unix-style line breaks (LF only).
- The Setup section directive UninstallIconFile is now deprecated and ignored. As Setup and Uninstall have been merged into a single executable, setting a custom icon for Uninstall is no longer possible.
- The Setup section directive UninstallStyle is now deprecated and ignored. Only the "modern" uninstaller style is supported now.
- Based on RemObjects Pascal Script SVN code revision 933.
- The uninstall program's version is now 51.30.0.0.
- A very large number of minor tweaks.
- This version is derived from Inno Setup 4.2.7, and therefore includes all of the features and fixes from that version.
Inno Setup 4.2 & 4.1 Revision History